Check local targets before resolving dependencies
authorRyan Quattlebaum <ryan.quattlebaum@icloud.com>
Sat, 19 Mar 2016 01:28:43 +0000 (21:28 -0400)
committerRyan Quattlebaum <ryan.quattlebaum@icloud.com>
Sat, 19 Mar 2016 01:28:43 +0000 (21:28 -0400)
A call to generate_targets() before calling resolve_dependencies()
catches invalid target names before fetching the source for the
dependencies.

src/cargo/ops/cargo_compile.rs

index 448034a79090c9abaa2c498ab849e589f7dd687c..3c592ef49f4f4b2a10b7ad456f175ccbb57757ef 100644 (file)
@@ -157,6 +157,9 @@ pub fn compile_pkg<'a>(root_package: &Package,
         bail!("jobs must be at least 1")
     }
 
+    let profiles = root_package.manifest().profiles();
+    try!(generate_targets(root_package, profiles, mode, filter, release));
+
     let (packages, resolve_with_overrides) = {
         try!(resolve_dependencies(root_package, config, source, features,
                                   no_default_features))
@@ -186,7 +189,6 @@ pub fn compile_pkg<'a>(root_package: &Package,
     let mut general_targets = Vec::new();
     let mut package_targets = Vec::new();
 
-    let profiles = root_package.manifest().profiles();
     match (*target_rustc_args, *target_rustdoc_args) {
         (Some(..), _) |
         (_, Some(..)) if to_builds.len() != 1 => {